interface OptionItemType<T> {
  label: string;
  value: T;
  key: T;
}

export type OptionsType<T = string | number> = OptionItemType<T>[];

export interface FormType {
  point: string;
  className: string;
  systemCode: string;
  alarmLevel: string;
  alarmType: string;
  countPointFlag: "" | "Y" | "N";
}

export type QueryParams = Omit<FormType, "systemCode"> & { systemIdList: string[] };

export type PageSizeTypeForAlarmPoint = 5 | 10 | 20 | 50;

export type DepartmentType = "MACHINE" | "ELECTRICTITY" | "WATER" | "GAS";

export type PageType = "detail" | "edit";

export interface PropsTypeForDrawer {
  point: string;
  type: PageType;
}

export interface EmitsTypeForDrawer {
  (e: "update:modelValue", val: boolean): void;
  (e: "refresh" | "close"): void;
}

export type PropsTypeForEdit = Pick<PropsTypeForDrawer, "point">;

export type PropsTypeForHistory = Pick<PropsTypeForDrawer, "point">;

export type EmitsTypeForHistory = {
  (e: "refresh" | "close"): void;
};
